<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // js代码的执行分两个阶段
        //   1 把var和具名函数提升到最前面
        //   2 再自上而下的顺序执行代码


        // 在函数内部也存在预编译


        // 你看到的代码
        // console.log(a);    // undefined
        // var a = 1;
        // console.log(a);


        // js实际上的执行顺序
        // var a;
        // console.log(a);    // undefined
        // a = 1;
        // console.log(a);







        // console.log(a);    // 报错   因为没有var,所以没有变量提升
        // a = 1;
        // console.log(a);






        // f();
        // // 这是一个具名函数，会有预编译
        // function f() {
        //     console.log(666);
        // }




        // var a = 1;

        // function f() {
        //     // 在函数内部也存在预编译
        //     console.log(a);    // undefined
        //     var a = 2;
        //     console.log(a);
        // }

        // f();
        // console.log(a);






        console.log(a);
        var a = 1;
        function a() {
            console.log(666);
        }
        a();
        console.log(a);




        // function a() {
        //     console.log(666);
        // }
        // console.log(a);   // 打印函数体


    </script>

</body>

</html>